#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
字体工具模块，提供随机选择字体文件的功能
"""

import os
import random
from PIL import ImageFont


# 获取字体目录
FONT_DIR = os.path.join(os.path.dirname(__file__), '..', '..', 'fonts')


def get_random_font_path():
    """
    随机获取fonts目录中的字体文件路径
    
    Returns:
        str: 字体文件的绝对路径，如果fonts目录为空或不存在则返回None
    """
    if not os.path.exists(FONT_DIR):
        return None
    
    try:
        # 获取所有字体文件
        font_files = [f for f in os.listdir(FONT_DIR) if f.endswith(('.ttf', '.otf', '.ttc'))]
        if not font_files:
            return None
        
        # 随机选择一个字体文件
        selected_font = random.choice(font_files)
        return os.path.join(FONT_DIR, selected_font)
    except Exception:
        return None


def get_random_font(size=24):
    """
    获取随机字体对象
    
    Args:
        size (int): 字体大小
        
    Returns:
        PIL.ImageFont: 字体对象
    """
    try:
        font_path = get_random_font_path()
        if font_path and os.path.exists(font_path):
            return ImageFont.truetype(font_path, size)
        else:
            return ImageFont.load_default()
    except Exception:
        return ImageFont.load_default()


def get_specific_font(font_name, size=24):
    """
    获取指定字体对象
    
    Args:
        font_name (str): 字体文件名
        size (int): 字体大小
        
    Returns:
        PIL.ImageFont: 字体对象
    """
    try:
        font_path = os.path.join(FONT_DIR, font_name)
        if os.path.exists(font_path):
            return ImageFont.truetype(font_path, size)
        else:
            return ImageFont.load_default()
    except Exception:
        return ImageFont.load_default()